﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;

namespace WPFServices.Services
{
    public static class Catalogs
    {
        public static IList<CATALOG> GetListCatalogs()
        {
            try
            {
                using (var db = new VLXDKH_QLKEntities())
                {

                    var cRet = db.CATALOGS.ToList();
                    return cRet;

                }
            }
            catch (Exception ex)
            {
                
                throw new Exception ("Không thể lấy danh sách Catalog");
            }

        }

        public static CATALOG GetCatalogs(int id)
        {
            try
            {
                using (var db = new VLXDKH_QLKEntities())
                {
                    var cRet = db.CATALOGS.FirstOrDefault(x => x.ID_CATALOG == id);
                    return cRet;
                }
            }
            catch (Exception)
            {
                
                throw new Exception ("Không thể lấy Catalog");
            }

        }

        public static int CreateCatalog(CATALOG mCatalog)
        {
            try
            {
                using (var db = new VLXDKH_QLKEntities())
                {
                    db.CATALOGS.Add(mCatalog);
                    db.SaveChanges();
                    var idRet = mCatalog.ID_CATALOG;
                    return idRet;
                }
            }
            catch (Exception)
            {
                
                throw new Exception ("Không thể tạo danh mục.");
            }
        }

        public static void UpdateCatalog(CATALOG mCatalog)
        {
            try
            {
                using (var db = new VLXDKH_QLKEntities())
                {
                    var curCatalog = db.CATALOGS.FirstOrDefault(x => x.ID_CATALOG == mCatalog.ID_CATALOG);
                    if (curCatalog != null)
                    {
                        curCatalog.NAME_CATALOG = mCatalog.NAME_CATALOG;
                        curCatalog.NOTES_CATALOG = mCatalog.NOTES_CATALOG;
                        db.CATALOGS.Attach(curCatalog);
                        db.Entry(curCatalog).State = EntityState.Modified;
                    }
                    db.SaveChanges();
                }
            }
            catch (Exception)
            {
                
                 throw new Exception ("Không thể cập nhật danh mục.");
            }
        }

        public static void DeleteCatalog(int id)
        {
            try
            {
                using (var db = new VLXDKH_QLKEntities())
                {
                    var curCatalog = db.CATALOGS.FirstOrDefault(x => x.ID_CATALOG == id);
                    db.CATALOGS.Remove(curCatalog);
                    db.SaveChanges();
                }
            }
            catch (Exception)
            {
                
                throw new Exception ("Không thể xóa danh mục vì có sản phẩm trong danh mục này.");
            }
        }
    }
}
